home *** CD-ROM | disk | FTP | other *** search
/ Power CD / Power CD ATARI-Rechner Lieben.iso / DEMOS / HM2_DEMO / BSP / CHECK.M < prev    next >
Encoding:
Text File  |  1992-07-14  |  3.9 KB  |  183 lines

  1. MODULE Check;
  2.  
  3. IMPORT
  4.     AES, appl, BufInOut, form, GEMDOS, graf, Oscan, Streams, SysVar, System,
  5.     TOS, v, XBIOS;
  6. FROM BufInOut IMPORT WriteString, WriteLn;
  7. FROM SYSTEM IMPORT ADDRESS, STORE, CODE;
  8.  
  9. CONST
  10.     nl = 15C+12C;
  11.  
  12. TYPE
  13.     tpOS = POINTER TO RECORD
  14.         w, version: SHORTCARD;
  15.         preset,pos,pend,rsvd,osmagic: ADDRESS;
  16.         date: LONGCARD;
  17.         conf: SHORTINT;
  18.     END;
  19.     tpSI = POINTER TO SHORTINT;
  20.     tpAdr = POINTER TO ADDRESS;
  21.  
  22.     tpCookie = POINTER TO tCookie;
  23.     tCookie = RECORD
  24.         id : LONGCARD;
  25.         val: LONGCARD;
  26.     END;
  27.     tCookieId = RECORD
  28.         CASE :SHORTINT OF
  29.         | 0: name: ARRAY [0..5] OF CHAR;
  30.         | 1: id: LONGCARD; null: SHORTINT;
  31.         END
  32.     END;
  33.     
  34. VAR
  35.     h: Streams.tStreamHandle;
  36.     pOS: tpOS;
  37.     p: ADDRESS;
  38.     in: ARRAY[0..10] OF SHORTINT;
  39.     out: ARRAY[0..56] OF SHORTINT;
  40.     vdihdl: SHORTINT;
  41.     oscan: SHORTINT;
  42.     pc: tpCookie;
  43.     CookieId: tCookieId;
  44.     i: SHORTINT;
  45.     GEMDOS_Version: GEMDOS.tVersion;
  46.     s: ARRAY [0..999] OF CHAR;
  47.  
  48. (* $P+ $X- $Y- *)
  49. PROCEDURE fpu (): SHORTINT;
  50.  
  51.     BEGIN
  52.         CODE (0487AH, 0001AH);
  53.         CODE (03F3CH, 00026H);
  54.         CODE (04E4EH);
  55.         CODE (05C4FH);
  56.         CODE (07000H);
  57.         CODE (0103AH, 0001EH);
  58.         CODE (00C00H, 00018H);
  59.         CODE (057C0H);
  60.         CODE (05200H);
  61.         CODE (04E75H);
  62.         CODE (0F280H, 00000H);
  63.         CODE (0F327H);
  64.         CODE (041FAH, 0000AH);
  65.         CODE (010AFH, 00001H);
  66.         CODE (0F35FH);
  67.         CODE (04E75H);
  68.         CODE (00000H);
  69.     END fpu;
  70. (* $P= $X= $Y= *)
  71.  
  72. PROCEDURE WriteEnv;
  73.  
  74.     VAR
  75.         (*$Reg*) pChar: POINTER TO CHAR;
  76.  
  77.     BEGIN
  78.         pChar := TOS.BasePage^.Environment;
  79.         REPEAT
  80.             WriteString ('  ');
  81.             WHILE pChar^ # 0C DO
  82.                 Streams.Write (pChar^); INC (pChar)
  83.             END;
  84.             WriteLn; INC (pChar)
  85.         UNTIL pChar^ = 0C;
  86.         WriteLn;
  87.     END WriteEnv;
  88.  
  89. BEGIN
  90.     IF appl.init () >= 0 THEN
  91.         h := Streams.Open ('CHECK.TXT', Streams.WriteOnly, 10000);
  92.         IF h < 0 THEN
  93.             VOID (form.alert (1, '[3][Schreibfehler][Abbruch]'));
  94.         ELSE
  95.             pOS := ADDRESS(SysVar.getSysLong (4F2H));
  96.             GEMDOS_Version := GEMDOS.Sversion ();
  97.             s := FORM (
  98.                 'TOS ', pOS^.version:4:16:'0', ' ', pOS^.date:8:16:'0',
  99.                 ' ', pOS^.conf:4:16:'0', nl,
  100.                 'GEMDOS ', GEMDOS_Version.HauptRevision::16, '.',
  101.                               GEMDOS_Version.UnterRevision::16, nl,
  102.                 'AES ', AES.global.version:4:16:'0', nl,
  103.                 'Getrez ', XBIOS.Getrez (), nl,
  104.                 'PhysTop: ', SysVar.getSysLong (042EH):8:16:'0', nl,
  105.                 'Logbase: ', LONGINT(XBIOS.Logbase ()):8:16:'0', nl,
  106.                 'CPU: 680', ORD (System.CPU), '0' + nl
  107.             );
  108.             WriteString (s);
  109.  
  110.             CASE System.FPU OF
  111.             | System.None:
  112.                 s := 'keine FPU' + nl;
  113.             | System.Atari:
  114.                 s := 'Atari-FPU' + nl;
  115.             | System.FLine:
  116.                 s := FORM ('FLine-FPU (6888', fpu () + 1, ')' + nl)
  117.             END;
  118.             WriteString (s);
  119.  
  120.             CODE (0A000H);
  121.             STORE (0, p);
  122.             s := FORM (
  123.                 'LineA: ', nl,
  124.                 '  BPL: ', tpSI(p+2)^, nl,
  125.                 '  Planes: ', tpSI(p)^, nl,
  126.                 '  Width: ', tpSI(p-12)^, nl,
  127.                 '  Height: ', tpSI(p-4)^, nl
  128.             );
  129.             WriteString (s);
  130.  
  131.             FOR i:=0 TO 9 DO in[i]:=1 END; in[10]:=2;
  132.             vdihdl := graf.handle (i, i, i, i);
  133.             v.opnvwk (in, vdihdl, out);
  134.             s := FORM (
  135.                 'VDI: ', nl,
  136.                 '  Width: ', out[0], nl,
  137.                 '  Height: ', out[1], nl,
  138.                 '  Colors: ', out[13], nl
  139.             );
  140.             WriteString (s);
  141.             v.clsvwk(vdihdl);
  142.  
  143.             oscan := Oscan.is ();
  144.             s := FORM ('Overscan: ', oscan:4:16:'0', nl);
  145.             WriteString (s);
  146.             IF oscan # 4200 THEN
  147.                 WITH Oscan.tab (-1)^ DO
  148.                     s := FORM (
  149.                         '  BPL: ', BytesPerLine, nl,
  150.                         '  Width: ', Width, nl,
  151.                         '  Height: ', Height, nl,
  152.                         '  LengthOfScreen: ', LengthOfScreen, nl,
  153.                         '  PhysbaseOffset: ', PhysbaseOffset, nl,
  154.                         '  LogbaseOffset: ', LogbaseOffset, nl
  155.                     );
  156.                     WriteString (s);
  157.                 END
  158.             END;
  159.  
  160.             pc := ADDRESS(SysVar.getSysLong(5A0H));
  161.             IF pc#NIL THEN
  162.                 CookieId.null := 0;
  163.                 WriteString ('Cookies:' + nl);
  164.                 WHILE pc^.id#0 DO
  165.                     CookieId.id := pc^.id;
  166.                     s := FORM ('  ', CookieId.name, ' (', pc^.id:8:16:'0', ') = ',
  167.                                   pc^.val:8:16:'0', ' ', pc^.val, nl);
  168.                     WriteString (s);
  169.                     INC (pc);
  170.                 END
  171.             END;
  172.  
  173.             WriteString ('Environment:' + nl);
  174.             WriteEnv;
  175.  
  176.             Streams.Close (h);
  177.         END;
  178.         appl.exit;
  179.     END
  180. END Check.
  181.             
  182.     
  183.